home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / util1 / wgrab.lha / RCS.RCSfiles / wgrab.c,v next >
Text File  |  1995-10-29  |  25KB  |  699 lines

  1. head    1.2;
  2. access;
  3. symbols;
  4. locks
  5.         aris:1.2; strict;
  6. comment @ * @;
  7.  
  8.  
  9. 1.2
  10. date    95.10.29.10.50.38;      author aris;    state Exp;
  11. branches;
  12. next    1.0;
  13.  
  14. 1.0
  15. date    95.10.13.09.25.31;      author aris;    state Exp;
  16. branches;
  17. next    ;
  18.  
  19.  
  20. desc
  21. @Window Graber Main FIle
  22. @
  23.  
  24.  
  25. 1.2
  26. log
  27. @Added Support For Screen Grabing
  28. @
  29. text
  30. @/* $Id: wgrab.c,v 1.0 1995/10/13 09:25:31 aris Exp $
  31. */
  32. #define CATCOMP_ARRAY
  33. #include "wgrab.h"
  34. #include "wgrab_cat.h"
  35. #include <clib/commodities_protos.h>
  36. #include <libraries/commodities.h>
  37. #include <clib/locale_protos.h>
  38. #include <libraries/locale.h>
  39. #include <time.h>
  40.  
  41.  
  42. #define _DEFPOPUP_  "lalt w"
  43. #define _DEFWGRAB_  "lalt g"
  44. #define _DEFSGRAB_  "lalt c"
  45.  
  46. struct Library *DataTypesBase,*IconBase;
  47. struct Library *CxBase;
  48. struct LocaleBase *LocaleBase;
  49.  
  50. enum {EID_AMODE=1,EID_DMODE,EID_FILENAME,EID_MHOTKEY,EID_GWHOTKEY,EID_GSHOTKEY,};
  51. enum {ID_SAVE=1,
  52.       ID_USE,
  53.       ID_HIDE,
  54.       ID_ABOUT,
  55.       ID_QUIT,
  56.       ID_AMODEON,ID_AMODEOFF,
  57.       ID_DMODEON,ID_DMODEOFF,
  58.       MN_PROJECT,MN_SETTINGS,
  59.       ID_LOAD,ID_LOADENV,ID_LOADDEF,};
  60. enum {HOTKEY_MAIN,HOTKEY_WGRAB,HOTKEY_SGRAB,};
  61.  
  62. APTR App,mwin,fname,dmode,amode,mhotkey,pfname,mn_main;
  63. APTR gwhotkey,gshotkey,bt_save,bt_use,bt_quit,helptx;
  64.  
  65. CxObj *broker;
  66. struct MsgPort *broker_port;
  67. CxObj *cmhotkey,*cgwhotkey,*cgshotkey;
  68. struct Catalog *mycatalog;
  69.  
  70. #define setmnlabel(number,label,comm) mn_data[number].nm_Label=lgetstring(label);\
  71.                                       mn_data[number].nm_CommKey=((comm)?lgetstring(comm):0)
  72. #define menuBAR {NM_ITEM,NM_BARLABEL,0,0,0,(APTR)0}
  73.  
  74. /*FOLDER Compute Hotkey String
  75. */
  76. char *mhotkeystr(void)
  77. {
  78.     char *str=(char *)malloc(sizeof(char)*30);
  79.     char *ht=(char *)malloc(sizeof(char)*30);
  80.     get(mhotkey,MUIA_String_Contents,&ht);
  81.     sprintf(str,"rawkey %s",ht);
  82.     return(str);
  83.     }
  84. char *gwhotkeystr(void)
  85. {
  86.     char *str=(char *)malloc(sizeof(char)*30);
  87.     char *ht=(char *)malloc(sizeof(char)*30);
  88.     get(gwhotkey,MUIA_String_Contents,&ht);
  89.     sprintf(str,"rawkey %s",ht);
  90.     return(str);
  91.     }
  92. char *gshotkeystr(void)
  93. {
  94.     char *str=(char *)malloc(sizeof(char)*30);
  95.     char *ht=(char *)malloc(sizeof(char)*30);
  96.     get(gshotkey,MUIA_String_Contents,&ht);
  97.     sprintf(str,"rawkey %s",ht);
  98.     return(str);
  99.     }
  100. /*END*/
  101. void setnewhotkeys(void)
  102. {
  103.     RemoveCxObj(cmhotkey);
  104.     RemoveCxObj(cgwhotkey);
  105.     RemoveCxObj(cgshotkey);
  106.     DeleteCxObj(cmhotkey);
  107.     DeleteCxObj(cgwhotkey);
  108.     DeleteCxObj(cgshotkey);
  109.     cmhotkey=HotKey(mhotkeystr(),broker_port,HOTKEY_MAIN);
  110.     cgwhotkey=HotKey(gwhotkeystr(),broker_port,HOTKEY_WGRAB);
  111.     cgshotkey=HotKey(gshotkeystr(),broker_port,HOTKEY_SGRAB);
  112.     AttachCxObj(broker,cmhotkey);
  113.     AttachCxObj(broker,cgwhotkey);
  114.     AttachCxObj(broker,cgshotkey);
  115.     }
  116.  
  117. /*FOLDER DoGrab
  118. */
  119. void dograb(BOOL screen)
  120. {
  121.     APTR req;
  122.     long ask,dmod;
  123.     char *filename=(char *)malloc(sizeof(char)*256);
  124.     char *file;
  125.     char *dir=(char *)malloc(sizeof(char)*256);
  126.     char *sfile;
  127.     struct TagItem AslTags[]={ASLFR_DoSaveMode,(ULONG)TRUE,
  128.                               ASLFR_TitleText,(ULONG)"Chose Filename to Save to!",
  129.                               ASLFR_InitialDrawer,(ULONG)NULL,
  130.                               TAG_DONE,0};
  131.     Object *picture;
  132.  
  133.     picture=GetPicture(screen);
  134.  
  135.     if (picture) {
  136.  
  137.         get(fname,MUIA_String_Contents,&sfile);
  138.         get(amode,MUIA_Selected,&ask);
  139.  
  140.         if (ask) {
  141.  
  142.             if (req=MUI_AllocAslRequest(0,NULL)) {
  143.  
  144.                 if (sfile) {
  145.  
  146.                     stcgfp(dir,sfile);
  147.                     AslTags[2].ti_Data=(ULONG)dir;
  148.  
  149.                     }
  150.  
  151.                 if (MUI_AslRequest(req,AslTags)) {
  152.  
  153.                     filename=((struct FileRequester *)req)->fr_Drawer;
  154.                     file=((struct FileRequester *)req)->fr_File;
  155.                     AddPart(filename,file,256);
  156.                     SavePicture(picture,filename);
  157.                     MUI_FreeAslRequest(req);
  158.                     return;
  159.                     }
  160.                 MUI_FreeAslRequest(req);
  161.                 }
  162.             }
  163.         get(dmode,MUIA_Selected,&dmod);
  164.  
  165.         if (dmod) {
  166.  
  167.             struct tm *p;
  168.             long t;
  169.  
  170.             time(&t);
  171.             p=localtime(&t);
  172.             stcgfp(filename,sfile);
  173.             sprintf(dir,"pic%d.%d.%d.iff",p->tm_hour,p->tm_min,p->tm_sec);
  174.             AddPart(filename,dir,256);
  175.             SavePicture(picture,filename);
  176.             return;
  177.             }
  178.         SavePicture(picture,sfile);
  179.         return;
  180.         }
  181.         MUI_Request(App,NULL,0,NULL,"*_OK","I Can`t Get Active Window !!",TAG_END);
  182.     }
  183. /*END*/
  184. /*FOLDER Locale lgetstring Function
  185. */
  186. static STRPTR lgetstring(long id)
  187. {
  188.     STRPTR builtin;
  189.     builtin=malloc(sizeof(char)*255);
  190.     strcpy(builtin,CatCompArray[id].cca_Str);
  191.     if (LocaleBase) {
  192.         strcpy(builtin,GetCatalogStr(mycatalog,id,builtin));
  193.         }
  194.     return(builtin);
  195.     }
  196. /*END*/
  197.  
  198. /*FOLDER Broker Hook
  199. */
  200. _HOOK_FUNC (long,cxhook,struct Hook *hook,APTR obj,CxMsg *cm)
  201. {
  202.  
  203.     switch (CxMsgType(cm)) {
  204.         case CXM_COMMAND:
  205.             switch (CxMsgID(cm)) {
  206.                 case CXCMD_DISABLE:
  207.                 case CXCMD_ENABLE:
  208.                     break;
  209.                 case CXCMD_KILL:
  210.                     DoMethod(obj,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit);
  211.                     break;
  212.                 case CXCMD_APPEAR:
  213.                     set(mwin,MUIA_Window_Open,TRUE);
  214.                     break;
  215.                 case CXCMD_DISAPPEAR:
  216.                     set(mwin,MUIA_Window_Open,FALSE);
  217.                     set(App,MUIA_Application_Iconified,TRUE);
  218.                     break;
  219.                }
  220.             break;
  221.         case CXM_IEVENT:
  222.             switch (CxMsgID(cm)) {
  223.                 case HOTKEY_MAIN:
  224.                      DoMethod(obj,MUIM_Application_ReturnID,ID_HIDE);
  225.                      break;
  226.                  case HOTKEY_WGRAB:
  227.                      dograb(FALSE);
  228.                      break;
  229.                  case HOTKEY_SGRAB:
  230.                      dograb(TRUE);
  231.                      break;
  232.                  }
  233.              break;
  234.          }
  235.      return(0);
  236.      }
  237. struct Hook cx_hook={
  238.        {NULL,NULL},
  239.        (void *)cxhook,
  240.        NULL,NULL
  241. };
  242. /*END*/
  243. _HOOK_FUNC(void,HelpFunc,struct Hook *hook,Object *help,Object **objptr)
  244. {
  245.     LONG udata=NULL;
  246.     if (*objptr) get(*objptr,MUIA_UserData,&udata);
  247.     set(helptx,MUIA_Text_Contents,udata);
  248.     }
  249. /*FOLDER ReadArgs
  250. */
  251. BOOL popup(long argc, UBYTE **argv)
  252. {
  253.     UBYTE **tt;
  254.     BOOL retval=FALSE;
  255.     struct RDArgs *rarg;
  256.     long vnp;
  257.     long args[]={0};
  258.  
  259.     if (argc==0) {
  260.         if (IconBase=OpenLibrary("icon.library",0)) {
  261.             tt=ArgArrayInit(argc,argv);
  262.             vnp=ArgInt(tt,"POPUP",-5);
  263.             if (vnp>-5) retval=TRUE;
  264.             ArgArrayDone();
  265.             CloseLibrary(IconBase);
  266.             }
  267.         }
  268.     else {
  269.         if (rarg=ReadArgs("POPUP/S",args,NULL)) {
  270.             retval=args[0];
  271.             FreeArgs(rarg);
  272.             }
  273.         }
  274.     return(retval);
  275. }
  276. /*END*/
  277.  
  278.  
  279. void main(long argc,UBYTE **argv)
  280. {
  281.     BOOL running=TRUE,pop;
  282.     long active,on;
  283.     ULONG signals;
  284.     static struct Hook help_hook={{0,0},(void *)HelpFunc,0,0};
  285.     struct NewMenu mn_data[]={
  286.     {NM_TITLE,"",0,0,0,(APTR)MN_PROJECT},
  287.     {NM_ITEM,"","",0,0,(APTR)ID_ABOUT},
  288.     menuBAR,
  289.     {NM_ITEM,"","",0,0,(APTR)ID_HIDE},
  290.     menuBAR,
  291.     {NM_ITEM,"","",0,0,(APTR)ID_QUIT},
  292.     {NM_TITLE,"",0,0,0,(APTR)MN_SETTINGS},
  293.     {NM_ITEM,"","",0,0,(APTR)ID_LOAD},
  294.     {NM_ITEM,"","",0,0,(APTR)ID_LOADENV},
  295.     {NM_ITEM,"","",0,0,(APTR)ID_LOADDEF},
  296.     menuBAR,
  297.     {NM_ITEM,"","",0,0,(APTR)ID_USE},
  298.     {NM_ITEM,"","",0,0,(APTR)ID_SAVE},
  299.     {NM_END,NULL,0,0,0,(APTR)0},
  300.     };
  301.  
  302.  
  303.     init();
  304.      if (!(DataTypesBase=OpenLibrary("datatypes.library",0)))
  305.          fail(NULL,"Can`t Open datatypes.library!!");
  306.      if (!(CxBase=OpenLibrary("commodities.library",0))) {
  307.          CloseLibrary(DataTypesBase);
  308.          fail(NULL,"Can`t Open commodities.library!!");
  309.          }
  310.      if (LocaleBase=(struct LocaleBase *)OpenLibrary("locale.library",0)) {
  311.          mycatalog=OpenCatalog(NULL,"wgrab.catalog",OC_BuiltInLanguage,(ULONG)"english",
  312.                                                     OC_Version,(ULONG)1,
  313.                                                     TAG_DONE,(ULONG)NULL);
  314.          }
  315.  
  316.     setmnlabel(0,MSG_PROJECT,NULL);
  317.     setmnlabel(1,MSG_ABOUT,MSG_ABOUT_SC);
  318.     setmnlabel(3,MSG_HIDE,MSG_HIDE_SC);
  319.     setmnlabel(5,MSG_QUIT,MSG_QUIT_SC);
  320.     setmnlabel(6,MSG_SETTINGS,NULL);
  321.     setmnlabel(7,MSG_LOAD,NULL);
  322.     setmnlabel(8,MSG_LOADENV,NULL);
  323.     setmnlabel(9,MSG_LOADDEF,NULL);
  324.     setmnlabel(11,MSG_USE,NULL);
  325.     setmnlabel(12,MSG_SAVE,NULL);
  326.  
  327.     pop=popup(argc,argv);
  328.  
  329.     App = ApplicationObject,
  330.           MUIA_Application_Title,"WGrab",
  331.           MUIA_Application_Version,"$VER: WGrab 01.20 (29.10.95)",
  332.           MUIA_Application_Copyright,"© 1995 Aris Basic",
  333.           MUIA_Application_Author,"Aris Basic",
  334.           MUIA_Application_Description,"Saves Active Window As IFF Picture",
  335.           MUIA_Application_Base,"WGRAB",
  336.           MUIA_Application_BrokerHook,&cx_hook,
  337.           MUIA_Application_SingleTask,TRUE,
  338.           MUIA_Application_Window,mwin=WindowObject,
  339.                                   MUIA_Window_ID,MAKE_ID('M','A','I','N'),
  340.                                   MUIA_Window_Title,"WGrab 01.20",
  341.                                   MUIA_Window_NeedsMouseObject,TRUE,
  342.                                   MUIA_Window_Menustrip,mn_main=MUI_MakeObject(MUIO_MenustripNM,mn_data,0),
  343.                                   WindowContents,VGroup,
  344.                                        Child,HGroup,
  345.                                            Child,Label(lgetstring(MSG_ASK_BEFORE)),
  346.                                            Child,amode=ImageObject,
  347.                                                        ImageButtonFrame,
  348.                                                        MUIA_InputMode,MUIV_InputMode_Toggle,
  349.                                                        MUIA_Image_Spec,MUII_CheckMark,
  350.                                                        MUIA_Image_FreeVert,TRUE,
  351.                                                        MUIA_Selected,TRUE,
  352.                                                        MUIA_Background,MUII_ButtonBack,
  353.                                                        MUIA_ShowSelState,FALSE,
  354.                                                        MUIA_ExportID,EID_AMODE,
  355.                                                        MUIA_UserData,lgetstring(MSG_ASK_HELP),
  356.                                                        End,
  357.                                            Child,Label(lgetstring(MSG_FILENAME)),
  358.                                            Child,pfname=PopaslObject,
  359.                                                        MUIA_Popstring_String,fname=StringObject,
  360.                                                                                    StringFrame,
  361.                                                                                    MUIA_String_MaxLen,256,
  362.                                                                                    MUIA_String_Contents,"RAM:",
  363.                                                                                    MUIA_ExportID,EID_FILENAME,
  364.                                                                                    End,
  365.                                                        MUIA_Popstring_Button,PopButton(MUII_PopFile),
  366.                                                        MUIA_Disabled,TRUE,
  367.                                                        MUIA_UserData,lgetstring(MSG_FILENAME_HELP),
  368.                                                        ASLFR_SleepWindow,TRUE,
  369.                                                        End,
  370.                                            Child,Label(lgetstring(MSG_DIR_MODE)),
  371.                                            Child,dmode=ImageObject,
  372.                                                        ImageButtonFrame,
  373.                                                        MUIA_InputMode,MUIV_InputMode_Toggle,
  374.                                                        MUIA_Image_Spec,MUII_CheckMark,
  375.                                                        MUIA_Image_FreeVert,TRUE,
  376.                                                        MUIA_Selected,FALSE,
  377.                                                        MUIA_Background,MUII_ButtonBack,
  378.                                                        MUIA_ShowSelState,FALSE,
  379.                                                        MUIA_ExportID,EID_DMODE,
  380.                                                        MUIA_Disabled,TRUE,
  381.                                                        MUIA_UserData,lgetstring(MSG_DIR_MODE_HELP),
  382.                                                        End,
  383.                                            End,
  384.                                        Child,ColGroup(2),
  385.                                            Child,Label(lgetstring(MSG_HOTKEY_POPUP)),
  386.                                            Child,mhotkey=StringObject,
  387.                                                          StringFrame,
  388.                                                          MUIA_String_MaxLen,20,
  389.                                                          MUIA_String_Contents,_DEFPOPUP_,
  390.                                                          MUIA_ExportID,EID_MHOTKEY,
  391.                                                          MUIA_UserData,lgetstring(MSG_HOTKEY_POPUP_HELP),
  392.                                                          End,
  393.                                            Child,Label(lgetstring(MSG_HOTKEY_WGRAB)),
  394.                                            Child,gwhotkey=StringObject,
  395.                                                          StringFrame,
  396.                                                          MUIA_String_MaxLen,20,
  397.                                                          MUIA_String_Contents,_DEFWGRAB_,
  398.                                                          MUIA_ExportID,EID_GWHOTKEY,
  399.                                                          MUIA_UserData,lgetstring(MSG_HOTKEY_WGRAB_HELP),
  400.                                                          End,
  401.                                            Child,Label(lgetstring(MSG_HOTKEY_SGRAB)),
  402.                                            Child,gshotkey=StringObject,
  403.                                                          StringFrame,
  404.                                                          MUIA_String_MaxLen,20,
  405.                                                          MUIA_String_Contents,_DEFSGRAB_,
  406.                                                          MUIA_ExportID,EID_GSHOTKEY,
  407.                                                          MUIA_UserData,lgetstring(MSG_HOTKEY_SGRAB_HELP),
  408.                                                          End,
  409.                                            End,
  410.                                        Child,helptx=TextObject,
  411.                                              TextFrame,
  412.                                              MUIA_Text_PreParse,"\033c\033b",
  413.                                              MUIA_UserData,lgetstring(MSG_HELP_HELP),
  414.                                              End,
  415.                                        Child,HGroup,
  416.                                            Child,bt_save=SimpleButton(lgetstring(MSG_GUI_SAVE)),
  417.                                            Child,bt_use=SimpleButton(lgetstring(MSG_GUI_USE)),
  418.                                            Child,bt_quit=SimpleButton(lgetstring(MSG_GUI_QUIT)),
  419.                                            End,
  420.                                        End,
  421.                                   End,
  422.                          End;
  423.  
  424.     if (!App) {
  425.         if (mycatalog) CloseCatalog(mycatalog);
  426.         if (LocaleBase) CloseLibrary((struct Library *)LocaleBase);
  427.         if (CxBase) CloseLibrary(CxBase);
  428.         if (DataTypesBase) CloseLibrary(DataTypesBase);
  429.         fail(App,"Could Not Create Application");
  430.         }
  431.  
  432.     DoMethod(App,MUIM_Application_Load,MUIV_Application_Load_ENV);
  433.  
  434.     get(amode,MUIA_Selected,&active);
  435.     if (!active) {
  436.         set(pfname,MUIA_Disabled,FALSE);
  437.         set(dmode,MUIA_Disabled,FALSE);
  438.         }
  439.     get(dmode,MUIA_Selected,&active);
  440.     if (active) set(amode,MUIA_Disabled,TRUE);
  441.  
  442.  
  443.     DoMethod(bt_quit,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit);
  444.     DoMethod(bt_save,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,ID_SAVE);
  445.     DoMethod(bt_use,MUIM_Notify,MUIA_Pressed,FALSE,App,2,MUIM_Application_ReturnID,ID_USE);
  446.     DoMethod(mwin,MUIM_Notify,MUIA_Window_MouseObject,MUIV_EveryTime,helptx,3,MUIM_CallHook,&help_hook,MUIV_TriggerValue);
  447.     DoMethod(amode,MUIM_Notify,MUIA_Selected,TRUE,App,2,MUIM_Application_ReturnID,ID_AMODEON);
  448.     DoMethod(amode,MUIM_Notify,MUIA_Selected,FALSE,App,2,MUIM_Application_ReturnID,ID_AMODEOFF);
  449.     DoMethod(dmode,MUIM_Notify,MUIA_Selected,TRUE,App,2,MUIM_Application_ReturnID,ID_DMODEON);
  450.     DoMethod(dmode,MUIM_Notify,MUIA_Selected,FALSE,App,2,MUIM_Application_ReturnID,ID_DMODEOFF);
  451.     DoMethod(mwin,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,App,2,MUIM_Application_ReturnID,ID_HIDE);
  452.  
  453.     get(App,MUIA_Application_Broker,&broker);
  454.     get(App,MUIA_Application_BrokerPort,&broker_port);
  455.  
  456.     if (NULL==(cmhotkey=HotKey(mhotkeystr(),broker_port,HOTKEY_MAIN))) {
  457.         CloseLibrary(CxBase);
  458.         CloseLibrary(DataTypesBase);
  459.         fail(App,"Cannot Create Hotkeys!!");
  460.         }
  461.     if (NULL==(cgwhotkey=HotKey(gwhotkeystr(),broker_port,HOTKEY_WGRAB))) {
  462.         CloseLibrary(CxBase);
  463.         CloseLibrary(DataTypesBase);
  464.         fail(App,"Cannot Create Hotkeys!!");
  465.         }
  466.     if (NULL==(cgshotkey=HotKey(gshotkeystr(),broker_port,HOTKEY_SGRAB))) {
  467.         CloseLibrary(CxBase);
  468.         CloseLibrary(DataTypesBase);
  469.         fail(App,"Cannot Create Hotkeys!!");
  470.         }
  471.  
  472.     AttachCxObj(broker,cmhotkey);
  473.     AttachCxObj(broker,cgwhotkey);
  474.     AttachCxObj(broker,cgshotkey);
  475.  
  476.     if (pop) set(mwin,MUIA_Window_Open,TRUE);
  477.     else set(App,MUIA_Application_Iconified,TRUE);
  478.  
  479.     while (running) {
  480.         switch (DoMethod(App,MUIM_Application_Input,&signals))
  481.             {
  482.                 case MUIV_Application_ReturnID_Quit:
  483.                     running=FALSE;
  484.                     break;
  485.                 case ID_AMODEON:
  486.                     get(dmode,MUIA_Selected,&active);
  487.                     if (active) set(dmode,MUIA_Selected,FALSE);
  488.                     set(dmode,MUIA_Disabled,TRUE);
  489.                     set(pfname,MUIA_Disabled,TRUE);
  490.                     break;
  491.                 case ID_AMODEOFF:
  492.                     set(dmode,MUIA_Disabled,FALSE);
  493.                     set(pfname,MUIA_Disabled,FALSE);
  494.                     break;
  495.                 case ID_DMODEON:
  496.                     get(amode,MUIA_Selected,&active);
  497.                     if (active) set(amode,MUIA_Selected,FALSE);
  498.                     set(amode,MUIA_Disabled,TRUE);
  499.                     break;
  500.                 case ID_DMODEOFF:
  501.                     set(amode,MUIA_Disabled,FALSE);
  502.                     break;
  503.                 case ID_SAVE:
  504.                     DoMethod(App,MUIM_Application_Save,MUIV_Application_Save_ENVARC);
  505.                 case ID_USE:
  506.                     DoMethod(App,MUIM_Application_Save,MUIV_Application_Save_ENV);
  507.                     setnewhotkeys();
  508.                 case ID_HIDE:
  509.                     get(App,MUIA_Application_Iconified,&on);
  510.                     if(!on) {
  511.                       set(mwin,MUIA_Window_Open,FALSE);
  512.                       set(App,MUIA_Application_Iconified,TRUE);
  513.                       }
  514.                     else {
  515.                         set(App,MUIA_Application_Iconified,FALSE);
  516.                         set(mwin,MUIA_Window_Open,TRUE);
  517.                         }
  518.                     break;
  519.                 case ID_LOAD:
  520.                     DoMethod(App,MUIM_Application_Load,MUIV_Application_Load_ENV);
  521.                 case ID_LOADENV:
  522.                     DoMethod(App,MUIM_Application_Load,MUIV_Application_Load_ENVARC);
  523.                     setnewhotkeys();
  524.                     break;
  525.                 case ID_LOADDEF:
  526.                     set(amode,MUIA_Selected,TRUE);
  527.                     set(dmode,MUIA_Disabled,TRUE);
  528.                     set(amode,MUIA_Disabled,FALSE);
  529.                     set(dmode,MUIA_Selected,FALSE);
  530.                     set(pfname,MUIA_Disabled,TRUE);
  531.                     break;
  532.                 case ID_ABOUT:
  533.                     MUI_Request(App,mwin,0,NULL,"*_OK","\033c\033bWGrab 01.20\n\033n"
  534.                                                        "© Aris Basic\n\n"
  535.                                                        "This Program Uses MUI \n© Stefan Stuntz",TAG_DONE);
  536.                     break;
  537.                 }
  538.             if (running && signals) Wait(signals);
  539.             }
  540.         set(mwin,MUIA_Window_Open,FALSE);
  541.         if (mycatalog) CloseCatalog(mycatalog);
  542.         if (LocaleBase) CloseLibrary((struct Library *)LocaleBase);
  543.         if (CxBase) CloseLibrary(CxBase);
  544.         if (DataTypesBase) CloseLibrary(DataTypesBase);
  545.         fail(App,NULL);
  546.         }
  547.  
  548.  
  549.  
  550.  
  551. @
  552.  
  553.  
  554. 1.0
  555. log
  556. @Initial revision
  557. @
  558. text
  559. @d1 1
  560. a1 1
  561. /* $Id$
  562. d13 3
  563. a15 2
  564. #define _DEFPOPUP_ "lalt w"
  565. #define _DEFGRAB_  "lalt g"
  566. d21 1
  567. a21 1
  568. enum {EID_AMODE=1,EID_DMODE,EID_FILENAME,EID_MHOTKEY,EID_GHOTKEY,};
  569. d31 1
  570. a31 1
  571. enum {HOTKEY_MAIN,HOTKEY_GRAB,};
  572. d34 1
  573. a34 1
  574. APTR ghotkey,bt_save,bt_use,bt_quit,helptx;
  575. d38 1
  576. a38 1
  577. CxObj *cmhotkey,*cghotkey;
  578. d41 2
  579. a42 2
  580. #define setmnlabel(number,label,comm) mn_data[number].nm_Label=getstring(label);\
  581.                                       mn_data[number].nm_CommKey=((comm)?getstring(comm):0)
  582. d45 2
  583. a46 1
  584. /// Compute Hotkey String
  585. d55 9
  586. a63 1
  587. char *ghotkeystr(void)
  588. d67 1
  589. a67 1
  590.     get(ghotkey,MUIA_String_Contents,&ht);
  591. d71 1
  592. a71 1
  593. ////
  594. d75 2
  595. a76 1
  596.     RemoveCxObj(cghotkey);
  597. d78 2
  598. a79 1
  599.     DeleteCxObj(cghotkey);
  600. d81 2
  601. a82 1
  602.     cghotkey=HotKey(ghotkeystr(),broker_port,HOTKEY_GRAB);
  603. d84 2
  604. a85 1
  605.     AttachCxObj(broker,cghotkey);
  606. d88 3
  607. a90 2
  608. /// DoGrab
  609. void dograb(void)
  610. d104 1
  611. a104 1
  612.     picture=GetPicture();
  613. d154 4
  614. a157 3
  615. ////
  616. /// Locale getstring Function
  617. static STRPTR getstring(long id)
  618. d167 1
  619. a167 1
  620. ////
  621. d169 2
  622. a170 1
  623. /// Broker Hook
  624. d197 5
  625. a201 2
  626.                  case HOTKEY_GRAB:
  627.                      dograb();
  628. d213 1
  629. a213 1
  630. ////
  631. d220 2
  632. a221 1
  633. /// ReadArgs
  634. d247 1
  635. a247 1
  636. ////
  637. d302 1
  638. a302 1
  639.           MUIA_Application_Version,"$VER: WGrab 01.00 (04.10.95)",
  640. d311 1
  641. a311 1
  642.                                   MUIA_Window_Title,"WGrab 01.00",
  643. d316 1
  644. a316 1
  645.                                            Child,Label(getstring(MSG_ASK_BEFORE)),
  646. d326 1
  647. a326 1
  648.                                                        MUIA_UserData,getstring(MSG_ASK_HELP),
  649. d328 1
  650. a328 1
  651.                                            Child,Label(getstring(MSG_FILENAME)),
  652. d338 1
  653. a338 1
  654.                                                        MUIA_UserData,getstring(MSG_FILENAME_HELP),
  655. d341 1
  656. a341 1
  657.                                            Child,Label(getstring(MSG_DIR_MODE)),
  658. d352 1
  659. a352 1
  660.                                                        MUIA_UserData,getstring(MSG_DIR_MODE_HELP),
  661. d356 1
  662. a356 1
  663.                                            Child,Label(getstring(MSG_HOTKEY_POPUP)),
  664. d362 9
  665. a370 1
  666.                                                          MUIA_UserData,getstring(MSG_HOTKEY_POPUP_HELP),
  667. d372 2
  668. a373 2
  669.                                            Child,Label(getstring(MSG_HOTKEY_GRAB)),
  670.                                            Child,ghotkey=StringObject,
  671. d376 3
  672. a378 3
  673.                                                          MUIA_String_Contents,_DEFGRAB_,
  674.                                                          MUIA_ExportID,EID_GHOTKEY,
  675.                                                          MUIA_UserData,getstring(MSG_HOTKEY_GRAB_HELP),
  676. d381 5
  677. a385 7
  678.                                        Child,HGroup,
  679.                                            Child,Label(getstring(MSG_HELP)),
  680.                                            Child,helptx=TextObject,
  681.                                                     TextFrame,
  682.                                                     MUIA_UserData,getstring(MSG_HELP_HELP),
  683.                                                     End,
  684.                                            End,
  685. d387 3
  686. a389 3
  687.                                            Child,bt_save=SimpleButton(getstring(MSG_GUI_SAVE)),
  688.                                            Child,bt_use=SimpleButton(getstring(MSG_GUI_USE)),
  689.                                            Child,bt_quit=SimpleButton(getstring(MSG_GUI_QUIT)),
  690. d432 1
  691. a432 1
  692.     if (NULL==(cghotkey=HotKey(ghotkeystr(),broker_port,HOTKEY_GRAB))) {
  693. d437 5
  694. d444 2
  695. a445 2
  696.     AttachCxObj(broker,cghotkey);
  697.  
  698. @
  699.